Cloud computing has transformed the way applications are created and run in recent years. It employs the Infrastructure as a Service (IaaS) model in which customers outsource their computing and software capabilities to third party infrastructures and pay for the service usage on demand. Compared to the traditional computing model that uses dedicated, in-house infrastructures, cloud computing provides many advantages, including economies of scale, dynamic provisioning, and low capital expenditures. It allows customers to establish and rapidly expand a global presence in minutes rather than days or months, with the “pay-as-you-go” charging model.
Despite the tremendous momentums it grows, many companies are still reluctant to move their services or enterprise applications to the cloud, due to reliability, performance, security and privacy concerns. To maximize economic benefits and resource utilization, multiple virtual machines (VM) are simultaneously initiated to execute on the same physical server. Many network service providers, including cloud providers, use host based virtualization technologies to realize separation and performance isolation between VMs on the end-host level. In the network that interconnects hosts, the same set of physical routers and links are deployed to carry traffic for all customers indistinguishably. In this kind of infrastructure, the network service providers do not offer guaranteed network resources to tenants. Therefore, the bandwidth between VMs of the same tenant can vary significantly over time, depending on the network load and usage from other tenants. This kind of bandwidth variation in a cloud computing environment hinders a tenant's capability to operate efficiently and to carry on mission critical activities. Network service providers need more efficient network resource allocation methods.